//
//  UIImage+Extention.h
//  YunHaiManage
//
//  Created by zhangbolin on 2021/12/17.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (Extention)

/// 创建一个size为(1, 1)的纯色的UIImage
/// @param color 图片的颜色
+ (UIImage *)qjn_imageWithColor:(UIColor *)color;

/// 创建一个指定size的纯色的UIImage
/// @param color 图片的颜色
/// @param size 图片的尺寸
+ (UIImage *)qjn_imageWithColor:(UIColor *)color size:(CGSize)size;

/// 创建一个指定size的纯色有圆角的UIImage
/// @param color 图片的颜色
/// @param size 图片的尺寸
/// @param cornerRadius 图片的圆角
+ (UIImage *)qjn_imageWithColor:(UIColor *)color
                           size:(CGSize)size
                   cornerRadius:(CGFloat)cornerRadius;

/// 创建一个指定size的纯色可指定圆角位置的UIImage
/// @param color 图片的颜色
/// @param size 图片的尺寸
/// @param cornerRadius 图片的圆角
/// @param corner 图片的圆角位置
+ (UIImage *)qjn_imageWithColor:(UIColor *)color
                           size:(CGSize)size
                   cornerRadius:(CGFloat)cornerRadius
                     rectCorner:(UIRectCorner)corner;

/// 创建一个指定size的纯色可指定圆角位置及改变颜色偏移位置的UIImage
/// @param color 图片的颜色
/// @param size 图片的尺寸
/// @param offset 偏移量
/// @param cornerRadius 图片的圆角
+ (UIImage *)qjn_imageWithColor:(UIColor *)color
                           size:(CGSize)size
                     edgeOffSet:(UIEdgeInsets)offset
                   cornerRadius:(CGFloat)cornerRadius;


/// 图片base64数据转UIImage
/// @param base64
+ (nullable UIImage *)qjn_imageWithBase64:(nullable NSString *)base64;

/// 图片方向调整向上，如果本身是正的直接返回self
- (UIImage *)qjn_imageByOrientationUp;

/// 图片转png后的base64数据
- (NSString *)qjn_base64EncodingString;

/// 裁剪图片
/// @param rect 指定裁剪位置
- (UIImage *)qjn_cropImageWithRect:(CGRect)rect;

/// 压缩图片到目标尺寸
/// @param size  size 内进行缩放后的大小
- (UIImage *)qjn_imageByResizeWithTargetSize:(CGSize)size;


/// 拉伸图片
/// @param leftCapWidth 要拉伸的左侧位置
/// @param topCapHeight 要拉伸的顶部位置
- (UIImage *)qjn_stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;

/// 给图片加圆角
/// @param radius 图片圆角
- (UIImage *)qjn_imageByRoundCornerRadius:(CGFloat)radius;

/// 给图片加圆角和边框
/// @param radius 图片圆角
/// @param borderWidth 图片边框宽度
/// @param borderColor 图片边框颜色
- (UIImage *)qjn_imageByRoundCornerRadius:(CGFloat)radius
                              borderWidth:(CGFloat)borderWidth
                              borderColor:(UIColor *)borderColor;

/// 给图片加圆角和边框
/// @param radius 图片圆角
/// @param corners 圆角位置
/// @param borderWidth 图片边框宽度
/// @param borderColor 图片边框颜色
/// @param borderLineJoin 边框拐角类型
- (UIImage *)qjn_imageByRoundCornerRadius:(CGFloat)radius
                                  corners:(UIRectCorner)corners
                              borderWidth:(CGFloat)borderWidth
                              borderColor:(UIColor *)borderColor
                           borderLineJoin:(CGLineJoin)borderLineJoin;

@end

@interface UIImage (QJNGIF)

+ (UIImage *)qjn_animatedImageWithGIFNamed:(NSString *)name;

+ (UIImage *)qjn_animatedImageWithAnimatedGIFData:(NSData *)data;

+ (UIImage *)qjn_animatedImageWithAnimatedGIFURL:(NSURL *)url;

- (UIImage *)qjn_animatedImageByScalingAndCroppingToSize:(CGSize)size;

@end

NS_ASSUME_NONNULL_END
